import pandas as pd
from json import load
from sqlalchemy import create_engine
import plotly.express as px
# Pour affichage dynamique des graphiques Plotly sur GitHub
import plotly.offline as po
po.init_notebook_mode()
fichierConfig = "../../bdd/config.json"
with open(fichierConfig) as fichier:
config = load(fichier)["mysql"]
engine = create_engine('mysql+' + config["connector"] + '://' + config["user"] + ":" + config["password"] + "@" + config["host"] + ":" + config["port"] + "/" + config["bdd"], echo=True)
requeteCollecteurs = pd.read_sql_query("SELECT * FROM collecteur JOIN tri ON collecteur.idTri = tri.id LEFT JOIN marque ON collecteur.idMarque = marque.id LEFT JOIN categorie ON collecteur.idCategorie = categorie.id;", engine)
requeteDecheteries = pd.read_sql_query("SELECT * FROM decheterie;", engine)
dataCollecteurs = pd.DataFrame(requeteCollecteurs)
dataDecheteries = pd.DataFrame(requeteDecheteries)
# Renommage des colonnes types pour éviter les confusions (et les erreurs)
cols = []
isTri = True
for column in dataCollecteurs.columns:
if column == "type":
if isTri:
cols.append("typeTri")
isTri = False
else:
cols.append("typeCollecteur")
else:
cols.append(column)
dataCollecteurs.columns = cols
# Rajout d'une colonne villes par association code INSEE - ville depuis un dictionnaire (pour faciliter les affichages)
dictVilles = { "06029": "Cannes", "06030": "Le Cannet", "06079": "Mandelieu-la-Napoule", "06085": "Mougins", "06138": "Théoule-sur-Mer"}
for i in dataCollecteurs.index:
dataCollecteurs.loc[i, "ville"] = dictVilles[dataCollecteurs.loc[i, "codeInsee"]]
dataCollecteurs.rename(columns={"ville": "Ville", "nom": "Marque", "volume": "Volume"}, inplace=True)
dataCollecteurs
# Jeu de couleurs de la CACPL
dictVillesCouleurs = {"Cannes": "#7bc3b7", "Le Cannet": "#528238", "Mandelieu-la-Napoule": "#fab55a", "Mougins": "#e84e2c", "Théoule-sur-Mer": "#507999"}
# Jeu de couleurs utilisé pour les icones des collecteurs de la carte
dictTrisCouleurs = {"om": "#bf3932", "papier": "#3e8ecc", "emballage": "#c0b132", "verre": "#35c032", "vêtement": "#31a9be"}
fig = px.histogram(dataCollecteurs, x="Ville", color="Ville", width=900, color_discrete_map=dictVillesCouleurs, title="Nombre de sites de collecteurs par ville")
fig.update_xaxes(categoryorder="total descending")
fig.update_layout(yaxis_title="Nombre")
# Utilisation de l'histogramme
# Ne marche pas si des valeurs non définies
fig = px.histogram(dataCollecteurs, x="Ville", y="quantite", histfunc="sum", color="Ville", color_discrete_map=dictVillesCouleurs, width=900, title="Nombre de collecteurs par ville")
fig.update_xaxes(categoryorder="total descending")
fig.update_layout(yaxis_title="Nombre")
# Utilisation du diagramme à barres
dataCollecteursQuantiteVille = dataCollecteurs.groupby(by=["Ville"])["quantite"].sum().reset_index(name="quantite")
fig = px.bar(dataCollecteursQuantiteVille, x="Ville", y="quantite", color="Ville", width=900, color_discrete_map=dictVillesCouleurs, title="Nombre de collecteurs par ville")
fig.update_xaxes(categoryorder="total descending")
fig.update_layout(yaxis_title="Nombre")
dataSitesCollecteursQuantiteMarque = dataCollecteurs.groupby(by=["Marque"])["quantite"].count().reset_index()
fig = px.bar(dataSitesCollecteursQuantiteMarque, x="Marque", y="quantite", color="Marque", width=900, title="Nombre de sites de collecteurs par marque")
fig.update_xaxes(categoryorder="total descending")
fig.update_layout(yaxis_title="Nombre")
fig = px.histogram(dataCollecteurs, x="Marque", color="Ville", color_discrete_map=dictVillesCouleurs, width=900, title="Nombre de sites de collecteurs par marque et par ville")
fig.update_xaxes(categoryorder="total descending")
fig.update_layout(yaxis_title="Nombre")
fig = px.histogram(dataCollecteurs, x="Marque", color="Ville", color_discrete_map=dictVillesCouleurs, width=900, title="Nombre de sites de collecteurs par marque et par ville")
fig.update_xaxes(categoryorder="total descending")
fig.update_layout(barmode='group', yaxis_title="Nombre")
dataCollecteursQuantiteMarque = dataCollecteurs.groupby(by=["Marque"])["quantite"].sum().reset_index(name="Nombre")
fig = px.bar(dataCollecteursQuantiteMarque, x="Marque", y="Nombre", color="Marque", width=900, title="Nombre de collecteurs par marque")
fig.update_xaxes(categoryorder="total descending")
fig = px.histogram(dataCollecteurs, x="Marque", y="quantite", histfunc="sum", color="Ville", color_discrete_map=dictVillesCouleurs, width=900, title="Nombre de collecteurs par marque et par ville")
fig.update_xaxes(categoryorder="total descending")
fig.update_layout(yaxis_title="Nombre")
fig = px.histogram(dataCollecteurs, x="Marque", y="quantite", histfunc="sum", color="Ville", color_discrete_map=dictVillesCouleurs, width=900, title="Nombre de collecteurs par marque et par ville")
fig.update_xaxes(categoryorder="total descending")
fig.update_layout(barmode="group", yaxis_title="Nombre")
dataSitesCollecteursQuantiteVolume = dataCollecteurs.groupby(by=["Volume"]).count().reset_index()
fig = px.bar(dataSitesCollecteursQuantiteVolume, x="Volume", y="quantite", color="Volume", width=900, title="Nombre de sites de collecteurs par volume (en L)")
fig.update_layout(yaxis_title="Nombre")
fig = px.histogram(dataCollecteurs, x="Volume", color="Ville", color_discrete_map=dictVillesCouleurs, width=900, title="Nombre de sites de collecteurs par volume (en L) et par ville")
fig.update_xaxes(categoryorder="total descending")
fig.update_layout(yaxis_title="Nombre")
fig = px.histogram(dataCollecteurs, x="Volume", color="Ville", color_discrete_map=dictVillesCouleurs, width=900, title="Nombre de sites de collecteurs par volume (en L) et par ville")
fig.update_xaxes(categoryorder="total descending")
fig.update_layout(barmode='group', yaxis_title="Nombre")
fig = px.bar(dataSitesCollecteursQuantiteVolume, x="Volume", y="quantite", color="Volume", width=900, title="Nombre de sites de collecteurs par volume (en L)")
fig.update_xaxes(type="category")
fig.update_layout(yaxis_title="Nombre")
dataSitesCollecteursQuantiteVolumeVille = dataCollecteurs.groupby(by=["Volume", "Ville"]).count().reset_index()
fig = px.bar(dataSitesCollecteursQuantiteVolumeVille, x="Volume", y="quantite", color="Ville", color_discrete_map=dictVillesCouleurs, width=900, title="Nombre de sites de collecteurs par volume (en L)")
fig.update_xaxes(type="category")
fig.update_layout(yaxis_title="Nombre")
fig = px.bar(dataSitesCollecteursQuantiteVolumeVille, x="Volume", y="quantite", color="Ville", color_discrete_map=dictVillesCouleurs, width=900, title="Nombre de sites de collecteurs par volume (en L)")
fig.update_xaxes(type="category")
fig.update_layout(barmode='group', yaxis_title="Nombre")
dataCollecteursQuantiteVolume = dataCollecteurs.groupby(by=["Volume"])["quantite"].sum().reset_index(name="quantite")
px.bar(dataCollecteursQuantiteVolume, x="Volume", y="quantite", color="Volume", width=900, title="Nombre de collecteurs par volume (en L)")
fig.update_layout(yaxis_title="Nombre")
dataCollecteursQuantiteVolumeVille = dataCollecteurs.groupby(by=["Volume", "Ville"])["quantite"].sum().reset_index(name="quantite")
fig = px.bar(dataCollecteursQuantiteVolumeVille, x="Volume", y="quantite", color="Ville", width=900, color_discrete_map=dictVillesCouleurs, title="Nombre de collecteurs par volume (en L) et par ville")
fig.update_xaxes(categoryorder="total descending")
fig.update_layout(yaxis_title="Nombre")
fig = px.bar(dataCollecteursQuantiteVolumeVille, x="Volume", y="quantite", color="Ville", width=900, color_discrete_map=dictVillesCouleurs, title="Nombre de collecteurs par volume (en L) et par ville")
fig.update_xaxes(categoryorder="total descending")
fig.update_layout(barmode='group', yaxis_title="Nombre")
fig = px.bar(dataCollecteursQuantiteVolume, x="Volume", y="quantite", color="Volume", width=900, title="Nombre de collecteurs par volume (en L)")
fig.update_xaxes(type="category")
fig.update_layout(yaxis_title="Nombre")
fig = px.bar(dataCollecteursQuantiteVolumeVille, x="Volume", y="quantite", color="Ville", color_discrete_map=dictVillesCouleurs, width=900, title="Nombre de collecteurs par volume (en L)")
fig.update_xaxes(type="category")
fig.update_layout(yaxis_title="Nombre")
fig = px.bar(dataCollecteursQuantiteVolumeVille, x="Volume", y="quantite", color="Ville", color_discrete_map=dictVillesCouleurs, width=900, title="Nombre de collecteurs par volume (en L)")
fig.update_xaxes(type="category")
fig.update_layout(barmode='group', yaxis_title="Nombre")
dataSitesCollecteursQuantiteType = dataCollecteurs.groupby(by=["typeCollecteur"])["quantite"].count().reset_index()
fig = px.bar(dataSitesCollecteursQuantiteType, x="typeCollecteur", y="quantite", color="typeCollecteur", width=900, title="Nombre de sites de collecteurs par type de collecteur")
fig.update_xaxes(categoryorder="total descending")
fig.update_layout(xaxis_title="Type de collecteur", yaxis_title="Nombre")
fig = px.histogram(dataCollecteurs, x="typeCollecteur", color="Ville", width=900, color_discrete_map=dictVillesCouleurs, title="Nombre de sites de collecteurs par type de collecteur et par ville")
fig.update_xaxes(categoryorder="total descending")
fig.update_layout(xaxis_title="Type de collecteur", yaxis_title="Nombre")
fig = px.histogram(dataCollecteurs, x="typeCollecteur", color="Ville", width=900, color_discrete_map=dictVillesCouleurs, title="Nombre de sites de collecteurs par type de collecteur et par ville")
fig.update_xaxes(categoryorder="total descending")
fig.update_layout(barmode='group', xaxis_title="Type de collecteur", yaxis_title="Nombre")
dataCollecteursQuantiteType = dataCollecteurs.groupby(by=["typeCollecteur"])["quantite"].sum().reset_index(name="quantite")
fig = px.bar(dataCollecteursQuantiteType, x="typeCollecteur", y="quantite", color="typeCollecteur", width=900, title="Nombre de collecteurs par type de collecteur")
fig.update_xaxes(categoryorder="total descending")
fig.update_layout(xaxis_title="Type de collecteur", yaxis_title="Nombre")
fig = px.histogram(dataCollecteurs, x="typeCollecteur", y="quantite", histfunc="sum", color="Ville", color_discrete_map=dictVillesCouleurs, width=900, title="Nombre de collecteurs par type de collecteur et par ville")
fig.update_xaxes(categoryorder="total descending")
fig.update_layout(xaxis_title="Type de collecteur", yaxis_title="Nombre")
fig = px.histogram(dataCollecteurs, x="typeCollecteur", y="quantite", histfunc="sum", color="Ville", color_discrete_map=dictVillesCouleurs, width=900, title="Nombre de collecteurs par type de collecteur et par ville")
fig.update_xaxes(categoryorder="total descending")
fig.update_layout(barmode='group', xaxis_title="Type de collecteur", yaxis_title="Nombre")
fig = px.histogram(dataCollecteurs, x="typeTri", color="typeTri", width=900, title="Nombre de sites de collecteurs par type de tri")
fig.update_xaxes(categoryorder="total descending")
fig.update_layout(xaxis_title="Type de tri", yaxis_title="Nombre")
fig = px.histogram(dataCollecteurs, x="typeTri", color="Ville", color_discrete_map=dictVillesCouleurs, width=900, title="Nombre de sites de collecteurs par type de tri et par ville")
fig.update_xaxes(categoryorder="total descending")
fig.update_layout(xaxis_title="Type de tri", yaxis_title="Nombre")
fig = px.histogram(dataCollecteurs, x="typeTri", color="Ville", color_discrete_map=dictVillesCouleurs, width=900, title="Nombre de sites de collecteurs par type de tri et par ville")
fig.update_xaxes(categoryorder="total descending")
fig.update_layout(barmode='group', xaxis_title="Type de tri", yaxis_title="Nombre")
fig = px.histogram(dataCollecteurs, x="typeTri", y="quantite", histfunc="sum", color="typeTri", color_discrete_map=dictTrisCouleurs, width=900, title="Nombre de collecteurs par type de tri")
fig.update_xaxes(categoryorder="total descending")
fig.update_layout(xaxis_title="Type de tri", yaxis_title="Nombre")
fig = px.histogram(dataCollecteurs, x="typeTri", y="quantite", histfunc="sum", color="Ville", color_discrete_map=dictVillesCouleurs, width=900, title="Nombre de collecteurs par type de tri et par ville")
fig.update_xaxes(categoryorder="total descending")
fig.update_layout(xaxis_title="Type de tri", yaxis_title="Nombre")
fig = px.histogram(dataCollecteurs, x="typeTri", y="quantite", histfunc="sum", color="Ville", color_discrete_map=dictVillesCouleurs, width=900, title="Nombre de collecteurs par type de tri et par ville")
fig.update_xaxes(categoryorder="total descending")
fig.update_layout(barmode="group", xaxis_title="Type de tri", yaxis_title="Nombre")
fig = px.histogram(dataCollecteurs, x="Ville", color="typeTri", color_discrete_map=dictTrisCouleurs, width=900, title="Nombre de sites de collecteurs par ville et par type de tri")
fig.update_xaxes(categoryorder="total descending")
fig.update_layout(barmode="group", yaxis_title="Nombre", legend_title="Type de tri")
fig = px.histogram(dataCollecteurs, x="Ville", y="quantite", histfunc="sum", color="typeTri", color_discrete_map=dictTrisCouleurs, width=900, title="Nombre de collecteurs par ville et par type de tri")
fig.update_xaxes(categoryorder="total descending")
fig.update_layout(barmode="group", yaxis_title="Nombre", legend_title="Type de tri")
px.pie(dataCollecteurs, names="Ville", color="Ville", color_discrete_map=dictVillesCouleurs, title="Répartition des sites de collecteurs par ville")
px.pie(dataCollecteursQuantiteVille, values="quantite", names="Ville", color="Ville", color_discrete_map=dictVillesCouleurs, title="Répartition des collecteurs par ville")
px.pie(dataCollecteurs, names="typeTri", color="typeTri", color_discrete_map=dictTrisCouleurs, title="Répartition des sites de collecteurs par type de tri")
dataCollecteursQuantiteTri = dataCollecteurs.groupby(by=["typeTri"])["quantite"].sum().reset_index(name="quantite")
px.pie(dataCollecteursQuantiteTri, values="quantite", names="typeTri", color="typeTri", color_discrete_map=dictTrisCouleurs, title="Répartition des collecteurs par type de tri")
px.sunburst(dataCollecteurs, path=["Ville", "typeTri"], color="Ville", color_discrete_map=dictVillesCouleurs, title="Répartition des sites de collecteurs par ville et par type de tri")
px.sunburst(dataCollecteurs, path=["typeTri", "Ville"], color="typeTri", color_discrete_map=dictTrisCouleurs, title="Répartition des sites de collecteurs par type de tri et par ville")
px.sunburst(dataCollecteurs, path=["Ville", "typeTri"], values="quantite", color="Ville", color_discrete_map=dictVillesCouleurs, title="Répartition des collecteurs par ville et par type de tri")
px.sunburst(dataCollecteurs, path=["typeTri", "Ville"], values="quantite", color="typeTri", color_discrete_map=dictTrisCouleurs, title="Répartition des collecteurs par type de tri et par ville")